package com.example.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.domain.ResponseResult;
import com.example.domain.entity.Category;
import com.example.exception.FloraException;
import com.example.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/category")
public class CategoryController {
    @Autowired
    private CategoryService categoryService;

    /** 后台查询文章分类（查询所有（禁用的+未禁用的）） */
    @GetMapping("getCategoryPage")
    public IPage<Category> getCategoryPage(
            @RequestParam(required = false) String name,
            @RequestParam(required = false,defaultValue = "0") Integer pageNum,
            @RequestParam(required = false,defaultValue = "5") Integer pageSize
    ){
        return categoryService.getCategoryPage(name,pageNum,pageSize);
    }

    /** 前台查询文章分类（未禁用的），返回list即可
     * 感觉前台可以在选择文章分类时设计一个其他选项，来看分类已被禁用或删除的文章 */
    @GetMapping("getCategoryList")
    public List<Category> getCategoryList(){
        return categoryService.getCategoryList();
    }

    /** 添加文章分类 */
    @PostMapping("")
    public Category addCategory(@RequestBody Category category) throws FloraException {
        return categoryService.addCategory(category);
    }

    /** 修改文章分类
     * 两种情况：1.修改名字、描述等  2.禁用/解除禁用（因为禁用还要对文章表操作） */
    @PutMapping("")
    public void updateCategory(@RequestBody Category category,@RequestParam int flag) throws FloraException {
        if(flag==1) {
            categoryService.updateCategoryCommon(category);
        }
        else{
            categoryService.updateCategoryStatus(category);
        }
    }

    /** 删除文章分类，将所有这类文章的分类id设为0 */
    @DeleteMapping("/{id}")
    public void deleteCategory(@PathVariable Long id) throws FloraException {
        categoryService.deleteCategory(id);
    }
}
